iT邦幫忙

2024 iThome 鐵人賽

DAY 20
0
Security

picoCTF 刷題分享系列 第 20

picoCTF 刷題分享---Day 20(刷題去)

  • 分享至 

  • xImage
  •  

終於阿~終於阿~又到了一個里程碑了,我好忙阿~(來自深淵的吶喊~~),但好開心啊,過得好充實,這才是我要的人生!!(有人想要一起學的嗎🤣🤣


題目:ARMssembly 0

  • 以這題來說我們有兩種方法可以解
  • 第一種
    • 把它變成ELF直接執行他就可以得到答案
      -這裡我們要讀一個網頁https://github.com/joebobmiles/ARMv8ViaLinuxCommandline
    • 他會教你如何下載一個可以在linux上執行ARMv8(因為linux本身不支持
    • 所以要按他的步驟來,下方為懶人包(不建議使用

$ sudo apt install binutils-aarch64-linux-gnu -y
$ sudo apt install gcc-aarch64-linux-gnu -y
$ aarch64-linux-gnu-as -o chall.o chall.S
$ aarch64-linux-gnu-gcc -static -o chall chall.o
$ sudo apt install qemu-user-static
$ ./chall 3854998744 915131509 ( 好像每個人都不一樣 )

有想了解這個深淵的,再繼續看下去吧!!


$ sudo apt install binutils-aarch64-linux-gnu -y
// 這行安裝了 aarch64 架構的 GNU Binutils 工具集。
// Binutils 包含了彙編器、連結器等工具,是編譯工具鏈的一部分。

$ sudo apt install gcc-aarch64-linux-gnu -y
//這行安裝了 aarch64 (64位ARM) 架構的 GNU C 編譯器。這樣你就可以在你的電腦上編譯出可以在 ARM 64位架構的 Linux 系統上運行的程式。(但前面說過了這個還是不行,所以還要再下載其他的,待會會說

$ aarch64-linux-gnu-as -o chall.o chall.S
// 會將組合語言程式碼檔(.s)轉成目標檔案(Object File)的 .o 檔(由0,1組成)

$ aarch64-linux-gnu-gcc -static -o chall chall.o

  • 在了解這行以前,我們要先明白從Object File變成ELF檔有兩種方法
      1. 靜態連結(Static Linking):把所有會用到的函式都存入ELF,不需要連結外部函式庫
      1. 動態連結(Dynamic Linking):不需要都存入ELF,等程式開始時,要用到再跟作業系統要求

在這裡我們知道linux不支援ARMv8(不信的自己試試😏😏
所以無法用dynamic所以選擇-static
$ sudo apt install qemu-user-static
這行是為了下載一個可以直接執行ARMv8的一個環境
下載完後就可以./ARMv8的ELF檔了


後記:
第二種--明天再說😏😏這篇好好讀啊滿滿的點我有參考一些大佬的文章(怕我自己理解錯
我最後會貼一些連結建議可以先讀,還蠻厲害有趣的,好希望成為他們啊啊啊啊~~
為什麼我不是大佬啊啊啊!!!


連結區:
https://ithelp.ithome.com.tw/articles/10351735 (他說得蠻詳細的)
https://github.com/joebobmiles/ARMv8ViaLinuxCommandline (幾乎1比1了,但要注意我有加一行)
https://hackmd.io/@SBK6401/r1t0xvzF2#fn1 (那一行來自這裡)


真的好希望有天可以追上他們~~~~


上一篇
picoCTF 刷題分享---Day 19(刷題去)
下一篇
picoCTF 刷題分享---Day 21(刷題去)
系列文
picoCTF 刷題分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言